An application goes through different lifecycle stages as its content is transformed from source code implemented by a developer, through build artifacts created by at build management system, to deployment artifacts used when an application is instantiated. Developers create logs in order to record runtime information and create an audit trail that can be used later on to understand the runtime behavior of the software or help to diagnose and troubleshoot a problem. Unexpected faults usually produce exceptions which are recorded in the logs as well. Once a problem is detected in the production environment using logs and diagnosed as a source code problem, it is assigned to a developer to fix it.